#pragma once


#include "Type.h"
#include "DecoratedType.h"

//type of  TypeOf<T>  
class WHENGINE_API CTypeOfType : public CType
{
public:
    CTypeOfType();
    
    static CTypeOfType* GetStaticType();

    static CString CreateTypeName(const CString& ElementType);
    static STypeID CreateID(const SDecoratedType & ElementType);

protected:
    static CString PlaceholderName;

};

class WHENGINE_API CTypeOfGeneralized : public CType
{
public:
    CTypeOfGeneralized(CType* InElementType);

    CType* GetElementType();

    static CString CreateTypeName(CType* ElementType);
};
